//
//  Scene.h
//  RenderV1
//
//  Created by 黄翔 on 2019/10/20.
//  Copyright © 2019 黄翔. All rights reserved.
//

#ifndef Scene_h
#define Scene_h

#include <vector>
#include "Camera.h"
#include "GameObject.h"
#include "Light.h"
#include "SkyBox.h"
#include "ReferenceCounted.h"

namespace hxe
{
    class Scene : public virtual ReferenceCounted
    {
    public:
        void addGameObject(GameObject* gameObject);
        
        void setLight(Light* light);
        Light* getLight() const;

        void setSkyBox(SkyBox* skyBox);
        SkyBox* getSkyBox() const;

        Transform* getRoot() const;
        
        void update();
        void draw();
        
        ~Scene();
        Scene();
    private:
        Light* light;
        
        GameObject* root;

    };
}

#endif /* Scene_h */
